Provides types supporting the kinematic analysis of closed-loop, or parallel, linkages. The topology of the mechanism is described by a graph whose vertices are the links and whose edges are the joints. A spanning tree of that graph supplies the transformation path to each link, and the edges excluded from the tree define the loop-closure constraints that must be satisfied by any valid configuration.
Initializes a new parallel_linkage object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(link_container), | intent(in), | dimension(:) | :: | lnks |
The collection of links forming the mechanism. |
|
| type(joint), | intent(in), | dimension(:) | :: | jnts |
The collection of joints connecting the links. |
|
| integer(kind=int32), | intent(in), | optional | :: | base |
The index of the link that is fixed to ground. If not supplied, the first link is used. |
|
| integer(kind=int32), | intent(in), | optional | :: | effector |
The index of the link carrying the end-effector. If not supplied, the last link is used. |
|
| real(kind=real64), | intent(in), | optional | :: | tool(4,4) |
The transformation matrix relating the end-effector coordinate frame to the body frame of the end-effector link. If not supplied, an identity matrix is used. |
The resulting parallel_linkage object.
Initializes a new parallel_linkage object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(link), | intent(in), | dimension(:) | :: | lnks |
The collection of links forming the mechanism. |
|
| type(joint), | intent(in), | dimension(:) | :: | jnts |
The collection of joints connecting the links. |
|
| integer(kind=int32), | intent(in), | optional | :: | base |
The index of the link that is fixed to ground. If not supplied, the first link is used. |
|
| integer(kind=int32), | intent(in), | optional | :: | effector |
The index of the link carrying the end-effector. If not supplied, the last link is used. |
|
| real(kind=real64), | intent(in), | optional | :: | tool(4,4) |
The transformation matrix relating the end-effector coordinate frame to the body frame of the end-effector link. If not supplied, an identity matrix is used. |
The resulting parallel_linkage object.
Initializes a new planar_linkage object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(link_container), | intent(in), | dimension(:) | :: | lnks |
The collection of links forming the mechanism. |
|
| type(joint), | intent(in), | dimension(:) | :: | jnts |
The collection of joints connecting the links. Every joint must be usable within a planar mechanism. |
|
| integer(kind=int32), | intent(in), | optional | :: | base |
The index of the link that is fixed to ground. If not supplied, the first link is used. |
|
| integer(kind=int32), | intent(in), | optional | :: | effector |
The index of the link carrying the end-effector. If not supplied, the last link is used. |
|
| real(kind=real64), | intent(in), | optional | :: | tool(4,4) |
The transformation matrix relating the end-effector coordinate frame to the body frame of the end-effector link. If not supplied, an identity matrix is used. |
The resulting planar_linkage object.
Initializes a new planar_linkage object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(link), | intent(in), | dimension(:) | :: | lnks |
The collection of links forming the mechanism. |
|
| type(joint), | intent(in), | dimension(:) | :: | jnts |
The collection of joints connecting the links. Every joint must be usable within a planar mechanism. |
|
| integer(kind=int32), | intent(in), | optional | :: | base |
The index of the link that is fixed to ground. If not supplied, the first link is used. |
|
| integer(kind=int32), | intent(in), | optional | :: | effector |
The index of the link carrying the end-effector. If not supplied, the last link is used. |
|
| real(kind=real64), | intent(in), | optional | :: | tool(4,4) |
The transformation matrix relating the end-effector coordinate frame to the body frame of the end-effector link. If not supplied, an identity matrix is used. |
The resulting planar_linkage object.
Defines the behavior common to all multi-link mechanisms, including those containing closed kinematic loops. The joint variables of the mechanism are collected into a single array; the variables belonging to each joint appear in the order in which the joints were supplied.
| procedure , public :: body_transform => km_body_transform Function | |
| procedure , public :: constraint_jacobian => km_constraint_jacobian Function | |
| procedure , public :: constraints => km_constraints Function | |
| procedure , public :: end_effector_transform => km_effector_transform Function | |
| procedure , public :: forward_kinematics => km_forward_kinematics Function | |
| procedure , public :: get_actuated_indices => km_get_actuated_indices Function | |
| procedure , public :: get_actuated_variable_count => km_get_nactuated Function | |
| procedure , public :: get_actuated_variables => km_get_actuated_variables Function | |
| procedure , public :: get_base_link => km_get_base Function | |
| procedure , public :: get_configuration => km_get_configuration Function | |
| procedure , public :: get_constraint_count => km_get_constraint_count Function | |
| procedure , public :: get_degrees_of_freedom => km_get_dof Function | |
| procedure , public :: get_end_effector_link => km_get_effector Function | |
| procedure , public :: get_joint => km_get_joint Function | |
| procedure , public :: get_joint_count => km_get_joint_count Function | |
| procedure , public :: get_joint_variable_index => km_get_variable_index Function | |
| procedure , public :: get_link => km_get_link Function | |
| procedure , public :: get_link_count => km_get_link_count Function | |
| procedure , public :: get_loop_count => km_get_loop_count Function | |
| procedure (mechanism_dimension) , public :: get_space_dimension | |
| procedure , public :: get_tool_frame => km_get_tool Function | |
| procedure , public :: get_variable_count => km_get_variable_count Function | |
| procedure , public :: inverse_kinematics => km_inverse_kinematics Function | |
| procedure , public :: jacobian => km_jacobian Function | |
| procedure , public :: joint_transform => km_joint_transform Function | |
| procedure (mechanism_pose_error) , public :: pose_error | |
| procedure , public :: set_configuration => km_set_configuration Subroutine | |
| procedure , public :: set_tool_frame => km_set_tool Subroutine | |
| procedure , public :: solve_configuration => km_solve_configuration Function |
A container allowing a collection of differing link types to be stored within a single array.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(link), | public, | allocatable | :: | item |
The link object. |
Defines a spatial, closed-loop linkage. Each independent loop within the mechanism contributes six loop-closure constraint equations.
| private function pl_init_containers (lnks, jnts, base, effector, tool) | Initializes a new parallel_linkage object. |
| private function pl_init_array (lnks, jnts, base, effector, tool) | Initializes a new parallel_linkage object. |
| procedure , public :: body_transform => km_body_transform Function | |
| procedure , public :: constraint_jacobian => km_constraint_jacobian Function | |
| procedure , public :: constraints => km_constraints Function | |
| procedure , public :: end_effector_transform => km_effector_transform Function | |
| procedure , public :: forward_kinematics => km_forward_kinematics Function | |
| procedure , public :: get_actuated_indices => km_get_actuated_indices Function | |
| procedure , public :: get_actuated_variable_count => km_get_nactuated Function | |
| procedure , public :: get_actuated_variables => km_get_actuated_variables Function | |
| procedure , public :: get_base_link => km_get_base Function | |
| procedure , public :: get_configuration => km_get_configuration Function | |
| procedure , public :: get_constraint_count => km_get_constraint_count Function | |
| procedure , public :: get_degrees_of_freedom => km_get_dof Function | |
| procedure , public :: get_end_effector_link => km_get_effector Function | |
| procedure , public :: get_joint => km_get_joint Function | |
| procedure , public :: get_joint_count => km_get_joint_count Function | |
| procedure , public :: get_joint_variable_index => km_get_variable_index Function | |
| procedure , public :: get_link => km_get_link Function | |
| procedure , public :: get_link_count => km_get_link_count Function | |
| procedure , public :: get_loop_count => km_get_loop_count Function | |
| procedure , public :: get_space_dimension => pl_get_space_dimension Function | |
| procedure , public :: get_tool_frame => km_get_tool Function | |
| procedure , public :: get_variable_count => km_get_variable_count Function | |
| procedure , public :: inverse_kinematics => km_inverse_kinematics Function | |
| procedure , public :: jacobian => km_jacobian Function | |
| procedure , public :: joint_transform => km_joint_transform Function | |
| procedure , public :: pose_error => pl_pose_error Function | |
| procedure , public :: set_configuration => km_set_configuration Subroutine | |
| procedure , public :: set_tool_frame => km_set_tool Subroutine | |
| procedure , public :: solve_configuration => km_solve_configuration Function |
Defines a planar, closed-loop linkage operating within the x-y plane. Each independent loop within the mechanism contributes three loop-closure constraint equations, avoiding the redundant equations that arise when a planar mechanism is analyzed in three dimensions.
| private function pln_init_containers (lnks, jnts, base, effector, tool) | Initializes a new planar_linkage object. |
| private function pln_init_array (lnks, jnts, base, effector, tool) | Initializes a new planar_linkage object. |
| procedure , public :: body_transform => km_body_transform Function | |
| procedure , public :: constraint_jacobian => km_constraint_jacobian Function | |
| procedure , public :: constraints => km_constraints Function | |
| procedure , public :: end_effector_pose => pln_end_effector_pose Function | |
| procedure , public :: end_effector_transform => km_effector_transform Function | |
| procedure , public :: forward_kinematics => km_forward_kinematics Function | |
| procedure , public :: get_actuated_indices => km_get_actuated_indices Function | |
| procedure , public :: get_actuated_variable_count => km_get_nactuated Function | |
| procedure , public :: get_actuated_variables => km_get_actuated_variables Function | |
| procedure , public :: get_base_link => km_get_base Function | |
| procedure , public :: get_configuration => km_get_configuration Function | |
| procedure , public :: get_constraint_count => km_get_constraint_count Function | |
| procedure , public :: get_degrees_of_freedom => km_get_dof Function | |
| procedure , public :: get_end_effector_link => km_get_effector Function | |
| procedure , public :: get_joint => km_get_joint Function | |
| procedure , public :: get_joint_count => km_get_joint_count Function | |
| procedure , public :: get_joint_variable_index => km_get_variable_index Function | |
| procedure , public :: get_link => km_get_link Function | |
| procedure , public :: get_link_count => km_get_link_count Function | |
| procedure , public :: get_loop_count => km_get_loop_count Function | |
| procedure , public :: get_space_dimension => pln_get_space_dimension Function | |
| procedure , public :: get_tool_frame => km_get_tool Function | |
| procedure , public :: get_variable_count => km_get_variable_count Function | |
| procedure , public :: inverse_kinematics => km_inverse_kinematics Function | |
| procedure , public :: jacobian => km_jacobian Function | |
| procedure , public :: joint_transform => km_joint_transform Function | |
| procedure , public :: pose_error => pln_pose_error Function | |
| procedure , public :: set_configuration => km_set_configuration Subroutine | |
| procedure , public :: set_tool_frame => km_set_tool Subroutine | |
| procedure , public :: solve_configuration => km_solve_configuration Function |